<template>
    	<div class="wrapper">
			
			<!-- header部分 -->
			<header>
				<p>商家信息</p>
			</header>
			
			<!-- 商家logo部分 -->
			<div class="business-logo">
				<img :src="business.businessImg">
			</div>
			
			<!-- 商家信息部分 -->
			<div class="business-info">
				<h1>{{business.businessName}}</h1>
				<p>&#165;{{business.starPrice}}起送 &#165;{{business.deliveryPrice}}配送</p>
				<p>{{business.businessExplain}}</p>
			</div>
			
			<!-- 食品列表部分 -->
			<ul class="food">
				<li v-for="(food,index) in foodArray">
					<div class="food-left">
						<img :src="food.foodImg">
						<div class="food-left-info">
							<h3>{{food.foodName}}</h3>
							<p>{{food.foodExplain}}</p>
							<p>&#165;{{food.foodPrice}}</p>
						</div>
					</div>
					<div class="food-right">
						<div>
							<i class="fa fa-minus-circle"  @click="minus(index)" v-show="food.quantity!=0"></i>
						</div>
						<p><span v-show="food.quantity!=0">{{food.quantity}}</span></p>
						<div>
							<i class="fa fa-plus-circle" @click="add(index)"></i>
						</div>
					</div>
				</li>
			</ul>
			
			<!-- 购物车部分 -->
			<div class="cart">
				<div class="cart-left">
					<div class="cart-left-icon">
						<i class="fa fa-shopping-cart"></i>
						<div class="cart-left-icon-quantity">{{foodCount}}</div>
					</div>
					<div class="cart-left-info">
						<p>&#165;{{foodPrice}}</p>
						<p>另需配送费{{business.deliveryPrice}}元</p>
					</div>
				</div>
				<div class="cart-right">
					<!-- 不够起送费 -->

					<div class="cart-right-item" v-show="totalPrice<business.starPrice">
						&#165;{{business.starPrice}}起送
					</div>
					
					<!-- 达到起送费 -->
					<div class="cart-right-item" @click="toOrder()" v-show="totalPrice>=business.starPrice">
					    去结算
					</div>
				</div>
			</div>
		</div>	
</template>

<script>
       export default {
		   data() {
			return {
				//获取 query参数
                 businessId:this.$route.query.businessId,
				 business:{},
				 foodArray:[],
				 user:{},
			     cartArray:[], //保存购物车列表	
			}
		   },
		   created() {	
			//从sessionStorage中获取到用户信息，如果没有此用户信息，返回null
            this.user = this.$getSessionStorage('user');
			//利用axios根据businessId查询商家的信息
			this.$axios.post('BusinessController/getBusinessById',this.$qs.stringify({
				businessId:this.businessId
			})).then(response => {
				//如果请求成功
			    this.business = response.data;
				console.log(response.data);
			}).catch(error => {
				console.error(error);
			});

			 //向后台发送异步请求  根据商家编号查询所属食品信息
		   this.$axios.post('/FoodController/listFoodByBusinessId',this.$qs.stringify({
               businessId:this.businessId
		   })).then(response => {
				//如果请求成功
			    this.foodArray = response.data;
				//遍历 foodArray 将得到第一个Food对象添加一个属性quantity=0;
			    for(let i = 0;i<this.foodArray.length;i++){
					this.foodArray[i].quantity=0;
				}
				console.log(response.data);
				//调用ListCart方法(用户登录的情况)
			   if(this.user!=null){
				this.listCart();
			};
			}).catch(error => {
				console.error(error);
			});
			
	    },
	   methods: {
		 minus(index) {
			//首先验证是否登录,判断用户是否存在，如果不存在就跳转到login页面
            if(this.user==null){
				  this.$router.push({
                  path:'/login',

				})
				return;
			}else{
                 //完成减号操作(-) 判断数量>1  如果成立调用updateCate 否则调用 removeCart
				 if(this.foodArray[index].quantity>1){
					this.updateCart(index,-1);
				 }else{
					this.removeCart(index);
				 }
			}
		 },
		 add(index) {
			//首先验证是否登录,判断用户是否存在，如果不存在就跳转到login页面
              if(this.user==null){
				  this.$router.push({
                  path:'/login',
				})
				return;
			}else{
				//完成加号操作(+)  判断food对象中得数量是否等于0  调用后台saveCart 否则调用 updateCart
				if(this.foodArray[index].quantity==0){
					this.saveCart(index);
				}else{
					this.updateCart(index,1);
				}
			}
		 },
		 saveCart(index) {
			//	通过axios向后台发送请求
             this.$axios.post('/CartController/saveCart',this.$qs.stringify({
			   userId:this.user.userId,
               businessId:this.businessId,
			   foodId:this.foodArray[index].foodId
		   })).then(response => {
				//如果请求成功(响应为1)要将食品数量更新为1  this.foodArray[index].quantity=1
				//注意: 数量更新后在页面刷新才能显示 this.foodArray.sort();
				if(response.data==1){
				this.foodArray[index].quantity=1;
				}
				console.log(response.data);
				this.foodArray.sort();
			}).catch(error => {
				console.error(error);
			})
		 },
		 updateCart(index,num) {
			//	通过axios向后台发送请求.
			   this.$axios.post('/CartController/updateCart',this.$qs.stringify({
			   userId:this.user.userId,
               businessId:this.businessId,
			   foodId:this.foodArray[index].foodId,
			   quantity:this.foodArray[index].quantity + num
		   })).then(response => {
				//如果请求成功(then) 修改数量
					if(response.data==1){
					this.foodArray[index].quantity += num;
				}
				console.log(response.data);
				this.foodArray.sort();
			}).catch(error => {
				console.error(error);
			})

		 },
		 removeCart(index) {
			//	通过axios向后台发送请求
			   this.$axios.post('/CartController/removeCart',this.$qs.stringify({
			   userId:this.user.userId,
               businessId:this.businessId,
			   foodId:this.foodArray[index].foodId
		   })).then(response => {
				//如果请求成功 修改食品数量为0 数量和减号消失
				//注意: 数量更新后在页面刷新才能显示 this.foodArray.sort();
				if(response.data==1){
					this.foodArray[index].quantity = 0;
					this.foodArray.sort()
				}
				console.log(response.data);
				
			}).catch(error => {
				console.error(error);
			})

		  },
		    // 注意当你刷新页面得时候，之前的购买的食品数量不会保存
		    // 在methods当中写一个ListCart方法
		    listCart() {
              //利用axios根据userId和businessID查询购物车信息
            this.$axios.post('/CartController/listCart',this.$qs.stringify({
            userId:this.user.userId,
			businessId:this.businessId,
           })).then(response=>{
			//如果请求成功 让Cart中的quantity和食品中的quantity相等
			//注意: 数量更新后在页面刷新才能显示 this.foodArray.sort();
            this.cartArray = response.data;
            console.log(response.data);
		    for ( let food  of this.foodArray) {
				food.quantity = 0;
			for ( let cart of this.cartArray ) {
				if(food.foodId == cart.foodId){
					food.quantity = cart.quantity;
					this.foodArray.sort();
				}
			}	
			}
           }).catch(error=>{
            console.log(error)
           })
		 },
		 toOrder() {
			   this.$router.push({
                  path:'/order',
				  query: {
						businessId: this.business.businessId
					}
				})
		 }
	   },
		computed: {
            //食品的总价格
            foodPrice() {
			let foodPrice = 0;
		     for(let i = 0;i<this.foodArray.length;i++){
			foodPrice += this.foodArray[i].foodPrice * this.foodArray[i].quantity ;
			 }
			 return foodPrice;
			},
			//食品的总数量
            foodCount() {
				let foodCount = 0;
			  for(let i = 0;i<this.foodArray.length;i++){
			  foodCount += this.foodArray[i].quantity;
			 }
                 return foodCount;
			},
			//结算总价格 (配送费)	
		    totalPrice() {
				let totalPrice =0;
				totalPrice = this.foodPrice + this.business.deliveryPrice;
				return totalPrice;
			}
		}		 	
	}
	   

</script>

<style scoped>
/****************** 总容器 ******************/
.wrapper{
	width: 100%;
	height: 100%;
}

/****************** header部分 ******************/
.wrapper header{
	width: 100%;
	height: 12vw;
	background-color: #0097FF;
	color: #fff;
	font-size: 4.8vw;
	
	position: fixed;
	left: 0;
	top: 0;
	z-index: 1000;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/****************** 商家logo部分 ******************/
.wrapper .business-logo{
	width: 100%;
	height: 35vw;
	/*使用上外边距避开header部分*/
	margin-top: 12vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
.wrapper .business-logo img{
	width: 40vw;
	height: 30vw;
	border-radius: 5px;
}

/****************** 商家信息部分 ******************/
.wrapper .business-info{
	width: 100%;
	height: 20vw;
	
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}
.wrapper .business-info h1{
	font-size: 5vw;
}
.wrapper .business-info p{
	font-size: 3vw;
	color: #666;
	margin-top: 1vw;
}

/****************** 食品列表部分 ******************/
.wrapper .food{
	width: 100%;
	/*使用下外边距避开footer部分*/
	margin-bottom: 14vw;
}
.wrapper .food li{
	width: 100%;
	box-sizing: border-box;
	padding: 2.5vw;
	user-select: none;
	
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-left{
	display: flex;
	align-items: center;
}
.wrapper .food li .food-left img{
	width: 20vw;
	height: 20vw;
}
.wrapper .food li .food-left .food-left-info{
	margin-left: 3vw;
}
.wrapper .food li .food-left .food-left-info h3{
	font-size: 3.8vw;
	color: #555;
}
.wrapper .food li .food-left .food-left-info p{
	font-size: 3vw;
	color: #888;
	margin-top: 2vw;
}
.wrapper .food li .food-right{
	width: 16vw;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-right .fa-minus-circle{
	font-size: 5.5vw;
	color: #999;
	cursor: pointer;
}
.wrapper .food li .food-right p{
	font-size: 3.6vw;
	color: #333;
}
.wrapper .food li .food-right .fa-plus-circle{
	font-size: 5.5vw;
	color: #0097EF;
	cursor: pointer;
}

/****************** 购物车部分 ******************/
.wrapper .cart{
	width: 100%;
	height: 14vw;
	
	position: fixed;
	left: 0;
	bottom: 0;
	
	display: flex;
}
.wrapper .cart .cart-left{
	flex: 2;
	background-color: #505051;
	display: flex;
}
.wrapper .cart .cart-left .cart-left-icon{
	width: 16vw;
	height: 16vw;
	box-sizing: border-box;
	border: solid 1.6vw #444;
	border-radius: 8vw;
	background-color: #3190E8;
	font-size: 7vw;
	color: #fff;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	margin-top: -4vw;
	margin-left: 3vw;
	
	position: relative;
}
.wrapper .cart .cart-left .cart-left-icon-quantity{
	width: 5vw;
	height: 5vw;
	border-radius: 2.5vw;
	background-color: red;
	color: #fff;
	font-size: 3.6vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	position: absolute;
	right: -1.5vw;
	top: -1.5vw;
}
.wrapper .cart .cart-left .cart-left-info p:first-child{
	font-size: 4.5vw;
	color: #fff;
	margin-top: 1vw;
}
.wrapper .cart .cart-left .cart-left-info p:last-child{
	font-size: 2.8vw;
	color: #AAA;
}

.wrapper .cart .cart-right{
	flex: 1;
}
/*达到起送费时的样式*/
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #38CA73;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	cursor: pointer;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/*不够起送费时的样式（只有背景色和鼠标样式的区别）*/
/*
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #535356;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
*/
</style>
